package cn.edu.xjtu.work.isIntPalindrome;

/**
 * 9. 回文数
 * 
 * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
 * 
 * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
 */
public class Solution {
  public static void main(String[] args) {
    System.out.println(isPalindrome(123));
  }

  /**
   * 使用数字判断,取余乘十相加
   * 
   * @param x
   * @return
   */
  public static boolean isPalindrome(int x) {
    if (x == 0) {
      return true;
    }
    if (x < 0 || x % 10 == 0) {
      return false;
    }

    int temp = x;
    int rev = 0;
    while (temp != 0) {
      rev = rev * 10 + temp % 10;
      temp = temp / 10;
    }

    return rev == x;
  }

  /**
   * 双指针前后判断,转换成字符串判断
   * 
   * @param x
   * @return
   */
  public static boolean isPalindrome1(int x) {
    String s = String.valueOf(x);
    for (int i = 0; i < s.length() / 2; i++) {
      if (s.charAt(i) != s.charAt(s.length() - i - 1)) {
        return false;
      }
    }
    return true;
  }

}
